﻿using System.Runtime.CompilerServices;
using System.Data;
using Negocio.View.Base;
using System;
using Negocio.Generico;



namespace Negocio.View
{
    public class TitulacionView : ViewBase
    {

        #region Singleton

        private static TitulacionView instance;

        private TitulacionView()
        {
            //Constructor vacio
        }

        [MethodImpl(MethodImplOptions.Synchronized)]
        public static TitulacionView GetInstance()
        {
            if (instance == null)
            {
                instance = new TitulacionView();
            }
            return instance;
        }

        #endregion

        #region Constantes


        private const String CODIGOTITULACION = "CODIGOTITULACION";

        private const String NOMBRE = "NOMBRE";

        private const String CREDITOSTIT = "CREDITOSTIT";

        #endregion

        #region View

        /// <summary>
        /// Funcion que devuelve una vista de titulaciones sin parametros de busqueda
        /// </summary>
        /// <returns>DataView contenedor de las titulaciones</returns>
        public DataView GetViewTitulaciones()
        {
            return this.GetViewTitulaciones(new TitulacionDTO());
        }


        /// <summary>
        /// Funcion que obtiene un listado de titulaciones
        /// </summary>
        /// <returns>DataView con todos los resultados de la busqueda</returns>
        public DataView GetViewTitulaciones(TitulacionDTO filtro)
        {
            try
            {
                DataView dv = new DataView();
                DataTable dt = new DataTable("Titulacion");
                
                dt.Columns.Add(TitulacionView.CODIGOTITULACION, this.GetTypeSqlInt32);
                dt.Columns.Add(TitulacionView.NOMBRE, this.GetTypeString);
                dt.Columns.Add(TitulacionView.CREDITOSTIT, this.GetTypeSqlInt32);
                using (ContratoGenericoClient servicio = new ContratoGenericoClient())
                {
                    foreach (Negocio.Generico.TitulacionDTO bean in servicio.Get(filtro))
                    {
                        DataRow fila = dt.NewRow();
                        fila[TitulacionView.CODIGOTITULACION] = bean.CoTitulacion;
                        fila[TitulacionView.NOMBRE] = bean.Nombre;
                        fila[TitulacionView.CREDITOSTIT] = bean.Creditos;
                        dt.Rows.Add(fila);
                    }
                }
                return dt.DefaultView;
            }
            catch (Exception ex)
            {
                throw new ViewException(ex);
            }
        }

        #endregion
    }
}